e[Single]
#ScriptVersion[2]
#Title[SXy2]

script_enemy_main{
	
	@Initialize{
		//f[^
		InitializeData();
		InitializeAction();
		
		//XyJCfbNX
		spellNumber = "3";
		
		//XyJ1₵Ď擾
		SetSpellData( player, difficult, spellNumber, "Parent" );
		spellPC = GetSpellData( player, difficult, spellNumber );
		
		//XyJwiRg[^XNN
		BackGroundControl();
		
		//Ctݒ
		SetLife( 1000 );
		//ʒuݒ
		Warp( CenterX, MinY + 100, 40 );
		//_[W[gݒ
		SetDamageRate( 25, 25 );
		//蔻ݒ
		SetCollisionEx( 32, 16, false, 180 );
		//Gl~[}[J[
		SetEnemyMarker( true );
		
		//C^XNJn
		TMain();
	}
	
	@MainLoop{
		//yield[v
		yield;
	}
	
	@DrawLoop{
		//{X摜`
		SetGraphicScale( xscale, yscale );
		DrawBoss( imgBoss );
		
		//bXyJ`
		DrawText( IntToString( spellPC[ 0 ] ), 340, 64, 12, 255 );
		DrawText( "/",                         360, 64, 12, 255 );
		DrawText( IntToString( spellPC[ 1 ] ), 380, 64, 12, 255 );
	}
	
	@BackGround{
		//wi`ݒ莞̂ݔwi`
		if( isDrawBackGround ){
			BackGroundDraw();
		}
	}
	
	@Finalize{
		//ŏI
		FinalizeData();
		
		//XyJ擾Ăꍇ擾vX
		if( GotSpellCardBonus() ){
			SetSpellData( player, difficult, spellNumber, "Child" );
		}
	}
	
	/**
	 * C^XN
	 */
	task TMain(){
		//60F(1b)҂
		FWait( 60 );
		
		//XyJ錾
		DeclareSpell();
		
		//eANV
		SetAction( ACT_SHOT_B, 21600 );
		
		//U
		alternative( difficult )
			case( "Easy" ){
				Atack_Easy();
			}
			case( "Normal" ){
				Atack_Normal();
			}
			case( "Panic" ){
				Atack_Panic();
			}
	}
	
	/**
	 * XyJ錾
	 */
	function DeclareSpell(){
		//XyJ擾
		let spellname = GetSpellName( player, difficult, spellNumber );
		
		//XRAݒ
		SetScore( 20000000 );
		//Ԑݒ
		SetTimer( 51 );
		//JbgC
		CutIn( KOUMA, spellname, NULL, 0, 0, 0, 0 );
		//XyJ
		PlaySE( seUseSpell );
		//XyANV
		SetAction( ACT_SPELL, 120 );
		//120F(2b)҂
		FWait( 120 );
	}
	
	/**
	 * Easy UC^XN
	 */
	task Atack_Easy(){
	}
	
	/**
	 * Normal UC^XN
	 */
	task Atack_Normal(){
	}
	
	/**
	 * Panic UC^XN
	 */
	task Atack_Panic(){
		let angle = 0;
		let way = 10;
		let waitspan = 40;
		let speed = 3.2;
		let accspeed = 0.0055;
		let rollangle = 2.2;
		let turn = 1;
		
		loop{
			angle = rand( 0, 360 );
			ascent( i in 0..way ){
				CreateCherryShot( GetX() + 92, GetY(), speed, angle + i * 360 / way, PURPLE23, 20, 1, rollangle, accspeed,  1 );
				CreateCherryShot( GetX() - 92, GetY(), speed, angle + i * 360 / way, PURPLE23, 20, 1, rollangle, accspeed, -1 );
			}
			
			FWait( waitspan );
		}
	}
	
	/**
	 * `F[e
	 */
	task CreateCherryShot( x, y, speed, angle, graph, delay, slife, ang, vspeed, turn ){
		let sangle = angle;
		
		let obj = CreateObjShot( x, y, speed, angle, graph, delay );
		Obj_SetAutoDelete( obj, false );
		
		while( !Obj_BeDeleted( obj ) ){
			Obj_SetSpeed( obj, speed );
			Obj_SetAngle( obj, sangle );
			
			sangle += ang * turn;
			speed += vspeed;
			
			if( absolute( sangle - angle ) >= 180 ){
				if( slife == 1 ){
					ascent( i in 0..3 ){
						CreateCherryShot( Obj_GetX( obj ), Obj_GetY( obj ), speed, Obj_GetAngle( obj ) + ( 1.4 * ( i - 1 ) * turn ), graph, 0, 0, ang, vspeed, turn );
					}
				}else{
					ascent( i in 0..5 ){
						CreateShot01( Obj_GetX(obj), Obj_GetY(obj), speed * ( 15 - i ) / 15, Obj_GetAngle( obj ) + 14 * ( ( i - 2 ) * turn ), graph, 0 );
					}
				}
				
				if( !Obj_BeDeleted( obj ) ){
					Obj_Delete( obj );
				}
			}
			
			yield;
		}
	}
	
	//XNvg̃CN[h
	#include_function ".\initialize.txt"
}